#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：api_testing 
@File    ：url_utils.py
@IDE     ：PyCharm 
@Author  ：future76
@Date    ：2024/6/25 15:22 
@Desc    ：切换url工具
"""
# 标准库导入
import json
from urllib.parse import urlparse
# 第三方库导入
from jinja2 import Template
# 本地应用/模块导入

def get_base_url(environment):
    """
    根据环境名称返回相应的基础URL。
    :param environment: 环境名称字符串,online,test
    :return: 对应环境的基础URL字符串
    """
    url_map = {
        "online": "https://gateway.bilinl.com/",
        "test": "http://gateway.test.csbilin.com/"
    }
    # 获取对应环境的基础URL，如果环境名称不在字典中，返回None
    # 如果base_url为None，使用默认URL
    base_url = url_map.get(environment) if url_map.get(environment) else ''
    return base_url


def is_valid_url(url: str) -> bool:
    """
    验证是否是完整的url

    """
    parsed_url = urlparse(url)
    return bool(parsed_url.scheme and parsed_url.netloc)


if __name__ == '__main__':
    # print("22"+get_base_url("11")+"1111111")
    GLOBAL_VARS = {}
    CaseData ={'id': 0, 'featureName': 'F01_用户管理', 'caseName': '成功调用登陆接口，message返回success', 'path': 'uaa/login/acct', 'method': 'post', 'headers': None, 'params': None, 'data': '{\n        "clientId": "83YslrcMpBt3X3c0eK8jvhdPAW84ScHc",\n        "clientSecret": "rosJtPuAMy69wnEMiw9UqRaQNELypEyk",\n        "loginIp": "113.240.251.66",\n        "username": \'19918899808\',\n        "password": \'@qian@XUN*q2%\',\n        "phoneLogin": "0"\n    }', 'type': 'data', 'assertType': 'eq', 'actualJsonpath': 'code', 'expectData': 0, 'result': '测试通过，断言成功。', 'jsonExData': '{"VAR_TOKEN":"$..data.value","MSG":"$.message"}', 'is_true': True}
    print(type(CaseData))

    CaseData = eval(Template(str(CaseData)).render(GLOBAL_VARS))
    print(type(CaseData))
    # params = eval(CaseData["params"]) if isinstance(CaseData["params"], str) else None
    headers = eval(CaseData["headers"]) if isinstance(CaseData["headers"], str) else None
    # 增加对excel文件中请求体中的null处理
    if CaseData["type"] == "json":
        data = json.loads(CaseData["data"]) if isinstance(CaseData["data"], str) else None
    else:
        data = eval(CaseData["data"]) if isinstance(CaseData["data"], str) else None

    print(headers)
    # print(params)
    print(data)
    print(CaseData)
    print(GLOBAL_VARS)

